﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using STT.Business;
using STT.Entities;
using STT.Layer.Connection;
using System.Data.OleDb;

namespace STT.Admin.UserControls
{
    public partial class ucPhanLop : System.Web.UI.UserControl
    {
        public static int tuoi;
        ToolBox tb = new ToolBox();
        public static String maLop="";
        bool KiemTraRong;
        bool KiemTraTonTaiHV;
        bool KiemTraHVPL;
        bool KiemTraLop;
        string MaLop;
        List<string> error;
        string count;

        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                if (Request.QueryString.Get("key") != null)
                {
                    ddLopHoc.DataSource = BTbLop.SelectByID_Malop(int.Parse(Request.QueryString.Get("key")));
                    ddLopHoc.DataTextField = "TenLop";
                    ddLopHoc.DataValueField = "MaLop";
                    ddLopHoc.DataBind();

                    ddKhoaHoc.DataSource = BTbKhoaHoc.SelectByID_MaLop(int.Parse(Request.QueryString.Get("key")));
                    ddKhoaHoc.DataTextField = "TenKhoaHoc";
                    ddKhoaHoc.DataValueField = "MaKhoaHoc";
                    ddKhoaHoc.DataBind();
                    ddKhoaHoc.Items.Insert(0, new ListItem { Text = "---------Chọn---------", Value = "-1" });
                    ddKhoaHoc.SelectedIndex = 0;

                    ddLopHoc.Enabled = false;
                    ddKhoaHoc.Enabled = false;
                    Loanddl();

                    Methods.ChucVu(ref ddChucVu);
                    Methods.DonViHocVien(ref ddDonVi);

                    Methods.ChuyenMon(ref ddlBangCap);
                    Methods.HocVan(ref ddlTrinhDoNN);
                }
                else
                {
                    Methods.ChuyenMon(ref ddlBangCap);
                    Methods.HocVan(ref ddlTrinhDoNN);
                    Loandl1();
                    Methods.ChucVu(ref ddChucVu);
                    Methods.DonViHocVien(ref ddDonVi);
                }
            }
       
        }

        void LoadHocVienChinhThuc()
        {
            gvDSHVChinhThuc.AutoGenerateColumns = false;
            gvDSHVChinhThuc.DataSource = tb.GetDataTableByMaLop("TbHocVien_PhanLop_SelectChinhThucByLop", ddLopHoc.SelectedValue);
            gvDSHVChinhThuc.DataBind();

        }

        void LoadHocVienTamThoi()
        {
            gvHocVienTrongLop.AutoGenerateColumns = false;
            gvHocVienTrongLop.DataSource = tb.GetDataTableByMaLop("TbHocVien_PhanLop_SelectTamThoiByLop", ddLopHoc.SelectedValue);
            gvHocVienTrongLop.DataBind();

        }

        public void Loandl1()
        {

            ddKhoaHoc.DataSource = tb.GetDataTableByNguoiTao("TbKhoaHoc_SelectAll", Session["TenDN"].ToString());
            ddKhoaHoc.DataTextField = "TenKhoaHoc";
            ddKhoaHoc.DataValueField = "MaKhoaHoc";
            ddKhoaHoc.DataBind();
            ddKhoaHoc.Items.Insert(0, new ListItem { Text = "---------Chọn---------", Value = "-1" });
            ddKhoaHoc.SelectedIndex = 0;
        }
        public void Loanddl()
        {
            ddChucVu.DataSource = BTbChucVu.SelectAll();
            ddDonVi.DataSource = BTbDonVi.SelectAll();
            ddDonVi.DataTextField = "TenDonVi";
            ddChucVu.DataTextField = "TenChucVu";

          
            ddDonVi.DataValueField = "MaDonVi";
         
            ddChucVu.DataValueField = "MaChucVu";

            ddChucVu.DataBind();
            ddDonVi.DataBind();
        
            
        }
      
        protected void gvHocVien_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {

        }

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {

        }

        protected void gvHocVienTrongLop_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {

        }
      
        protected void btTimKiem_Click(object sender, EventArgs e)
        {
            gvHocVien.AutoGenerateColumns = false;
            gvHocVien.DataSource = tb.GetDataTableTimKiemPL("TbHocVien_PhanLop_TK_HV", int.Parse(ddKhoaHoc.SelectedValue), int.Parse(ddlBangCap.SelectedValue), int.Parse(ddlTrinhDoNN.SelectedValue), int.Parse(ddDonVi.SelectedValue), int.Parse(ddChucVu.SelectedValue),txtTen.Text, txtSoKhoaHoc.Text == "" ? -1 : int.Parse(txtSoKhoaHoc.Text));
            gvHocVien.DataBind();
        }

        protected void ddKhoaHoc_SelectedIndexChanged(object sender, EventArgs e)
        {
            
                btTimKiem.Enabled = true;
                ddLopHoc.DataSource = BTbLop.SelectTuKhoaHoc(int.Parse(ddKhoaHoc.SelectedValue));
                ddLopHoc.DataTextField = "TenLop";
                ddLopHoc.DataValueField = "MaLop";
                ddLopHoc.DataBind();
                ddLopHoc.Items.Insert(0, new ListItem { Text = "---------Chọn---------", Value = "-1" });
                ddLopHoc.SelectedIndex = 0;
        }

        protected void LinkButton2_Click(object sender, EventArgs e)
        {

        }

        protected void LinkButton1_Click(object sender, EventArgs e)
        {

        }

        protected void lbXuatDuLieu_Click(object sender, EventArgs e)
        {

        }
        void ThongBao(string Loi)
        {
            ScriptManager.RegisterClientScriptBlock(this, GetType(), "Thông báo!", "<script>alert('" + Loi + "')</script>", false);
        }
        protected void lbXoaTat_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < gvHocVienTrongLop.Rows.Count; i++)
                {


                    //BTbHocVien.Update_GhiChu(gvHocVienTrongLop.DataKeys[i].Values[0].ToString(), "0");


                }

                gvHocVien.DataBind();
                gvHocVienTrongLop.DataBind();
            }
            catch
            {
                ThongBao("Vui lòng kiểm tra lại dữ liệu!");
            }
        }

        protected void lbXuatDuLieu_Click1(object sender, EventArgs e)
        {

        }

        protected void lbXoaTat_Click1(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < gvHocVienTrongLop.Rows.Count; i++)
                {
                    
                }

                gvHocVien.DataBind();
                gvHocVienTrongLop.DataBind();
            }
            catch
            {
                ThongBao("Vui lòng kiểm tra lại dữ liệu!");
            }
        }

        protected void LinkButton2_Click1(object sender, EventArgs e)
        {

        }

        protected void LinkButton1_Click1(object sender, EventArgs e)
        {

        }

        protected void btnThemMoi_Click1(object sender, EventArgs e)
        {

        
            try
            {
                for (int i = 0; i < gvHocVien.Rows.Count; i++)
                {
                    CheckBox cbChon = (CheckBox)gvHocVien.Rows[i].Cells[0].FindControl("cbChon");
                    if (cbChon != null && cbChon.Checked)
                    {
                        if (ddLopHoc.SelectedValue.ToString() == "-1")
                        {
                            ThongBao("Bạn chưa chọn lớp!");
                        }
                        else
                        {
                            BTbHocVien_PhanLop.Insert_HocVien_PhanLop(gvHocVien.DataKeys[i].Values[0].ToString(), ddLopHoc.SelectedValue);
                            BTbHocVien.Update_Lop(gvHocVien.DataKeys[i].Values[0].ToString(), int.Parse(ddLopHoc.SelectedValue));
                        }
                    }
            
                }

                //gvHocVienTrongLop.DataSource = BTbHocVien.Select_PhanLop("1");
                //gvHocVienTrongLop.DataBind();
                LoadHocVienTamThoi();
              
            }
            catch
            {
                ThongBao("Bạn chưa chọn học viên !");
            }
        }

        protected void btnLuu_Click(object sender, EventArgs e)
        {

        }
        bool KiemTraDuLieu(int i)
        {
            return BTbDangNhap.KiemTraDuLieu(new ETbDangNhap
            {
                TenDangNhap = gvHocVienTrongLop.DataKeys[i].Values[0].ToString()

            });
        }
        protected void btnLuu_Click1(object sender, EventArgs e)
        {
         
            try
            {
                for (int i = 0; i < gvHocVienTrongLop.Rows.Count; i++)
                {
                  
                        BTbDangNhap.Insert(new ETbDangNhap
                        {
                            TenDangNhap = gvHocVienTrongLop.DataKeys[i].Values[0].ToString(),
                            MatKhau = "1234",
                            Quyen = "4",
                            RadomPass = "7T6Van4S",
                            KhoaTaiKhoan = 1
                        });
                        BTbHocVien.Update_Lop(gvHocVienTrongLop.DataKeys[i].Values[0].ToString(),int.Parse(ddLopHoc.SelectedValue));
                        BTbHocVien_PhanLop.Update_TrangThai_PhanLop(gvHocVienTrongLop.DataKeys[i].Values[0].ToString(), int.Parse(ddLopHoc.SelectedValue));
                }

                //gvHocVien.DataBind();
                //gvHocVienTrongLop.DataBind();
                LoadHocVienChinhThuc();
            }
            catch
            {
                ThongBao("Vui lòng kiểm tra lại dữ liệu!");
            }
        }

        protected void ddLopHoc_SelectedIndexChanged(object sender, EventArgs e)
        {
            LoadHocVienChinhThuc();
            LoadHocVienTamThoi();
        }

        protected void LinkButton1_Click2(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < gvHocVienTrongLop.Rows.Count; i++)
                {

                    CheckBox cbChon = (CheckBox)gvHocVienTrongLop.Rows[i].Cells[0].FindControl("cbChon");
                    if (cbChon != null && cbChon.Checked)
                    {
                        BTbHocVien_PhanLop.Delete_HocVien_PhanLop(gvHocVienTrongLop.DataKeys[i].Values[0].ToString(), ddLopHoc.SelectedValue);

                    }
                }
                LoadHocVienTamThoi();
            }
            catch
            {
                ThongBao("Vui lòng kiểm tra lại dữ liệu!");
            }
        }

        protected void btThemMoiHocVien_Click(object sender, EventArgs e)
        {

        }

        protected void LinkButton2_Click2(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < gvDSHVChinhThuc.Rows.Count; i++)
                {

                    CheckBox cbChon = (CheckBox)gvDSHVChinhThuc.Rows[i].Cells[0].FindControl("cbChon");
                    if (cbChon != null && cbChon.Checked)
                    {
                        BTbHocVien_PhanLop.Delete_HocVien_PhanLop(gvDSHVChinhThuc.DataKeys[i].Values[0].ToString(), ddLopHoc.SelectedValue);

                    }
                }
                LoadHocVienChinhThuc();
            }
            catch
            {
                ThongBao("Vui lòng kiểm tra lại dữ liệu!");
            }
        }

        protected void btThemExcel_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                error = new List<string>();
                string filename = FileUpload1.FileName;
                string[] str = FileUpload1.FileName.Split('.');
                string ten = str[0];
                string duoi = str[1];
                if (duoi == "xls" || duoi == "xlsx")
                {
                    string path = string.Concat(Server.MapPath("~/uploads/files/" + DateTime.Now.ToString("yyyymmddhhmmssfff") + ten + "." + duoi));
                    FileUpload1.PostedFile.SaveAs(path);
                    OleDbConnection oledbcon = new OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=" + path + ";extended properties=excel 12.0;");
                    OleDbCommand command = new OleDbCommand("select * from [sheet1$]", oledbcon);
                    OleDbDataAdapter objadapter1 = new OleDbDataAdapter(command);
                    oledbcon.Open();
                    DataTable dt = new DataTable();
                    DataTable hv = BTbHocVien.SelectAll();
                    DataTable hv_pl = BTbHocVien_PhanLop.SelectAllImport();
                    DataTable lop = BTbLop.SelectAll();
                    objadapter1.Fill(dt);
                    if (dt.Rows.Count > 0)
                    {
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            KiemTraRong = true;
                            KiemTraTonTaiHV = true;
                            KiemTraHVPL = true;
                            KiemTraLop = true;
                            for (int o = 0; o < dt.Columns.Count; o++)
                            {
                                KiemTraRong = true;
                                if (dt.Rows[i][o].ToString().Trim().Equals(""))
                                {
                                    KiemTraRong = false;
                                    error.Add("Lỗi bỏ trống trường của học viên phân lớp thứ: " + dt.Rows[i][0].ToString() + "!");
                                    break;
                                }
                            }
                            //Kiểm tra sự tồn tại của học viên trong dữ liệu
                            for (int j = 0; j < hv.Rows.Count; j++)
                            {
                                KiemTraTonTaiHV = true;
                                if (dt.Rows[i][1].ToString().ToLower().Trim() == hv.Rows[j][0].ToString().ToLower().Trim() &&
                                    dt.Rows[i][2].ToString().ToLower().Trim() == hv.Rows[j][1].ToString().ToLower().Trim() &&
                                    dt.Rows[i][3].ToString().ToLower().Trim() == hv.Rows[j][2].ToString().ToLower().Trim())
                                {
                                    KiemTraTonTaiHV = true;
                                    break;
                                }
                                else
                                {
                                    KiemTraTonTaiHV = false;
                                }
                            }
                            if (!KiemTraTonTaiHV)
                            {
                                error.Add("Học viên " + dt.Rows[i][1].ToString() + " không tồn tại!");
                                continue;
                            }
                            //Kiểm tra sự tồn tại của lớp
                            for (int l = 0; l < lop.Rows.Count; l++)
                            {
                                KiemTraLop = true;
                                if (dt.Rows[i][4].ToString().ToLower().Trim() == lop.Rows[l][0].ToString().ToLower().Trim() &&
                                    dt.Rows[i][5].ToString().ToLower().Trim() == lop.Rows[l][1].ToString().ToLower().Trim())
                                {
                                    KiemTraLop = true;
                                    //MaLop = lop.Rows[l][0].ToString().Trim();
                                    break;
                                }
                                else
                                {
                                    KiemTraLop = false;
                                }
                            }
                            if (!KiemTraLop)
                            {
                                error.Add("Lớp học: " + dt.Rows[i][4].ToString() + " không tồn tại!");
                                continue;
                            }
                            //Kiểm tra sự tồn tại của học viên trong lớp
                            for (int k = 0; k < hv_pl.Rows.Count; k++)
                            {
                                KiemTraHVPL = true;
                                if (dt.Rows[i][1].ToString().ToLower().Trim() == hv_pl.Rows[k][0].ToString().ToLower().Trim())
                                {
                                    KiemTraHVPL = false;
                                    error.Add("Học viên: " + dt.Rows[i][1].ToString() + " đã được phân trong lớp này!");
                                    break;
                                }
                            }
                            if (KiemTraRong && KiemTraTonTaiHV && KiemTraHVPL)
                            {
                                //try
                                //{
                                    BTbHocVien_PhanLop.Insert(new ETbHocVien_PhanLop
                                    {
                                        MaHV = dt.Rows[i][1].ToString(),
                                        MaLop = dt.Rows[i][4].ToString(),
                                        TrangThai = 1
                                    });
                                    BTbHocVien.Update_Lop(dt.Rows[i][1].ToString(), Int32.Parse(dt.Rows[i][4].ToString()));
                                //}
                                //catch (Exception ex)
                                //{
                                //    Response.Write("");
                                //}
                            }
                        }
                        for (int i = 0; i < error.Count; i++)
                        {
                            count += " + " + error[i].ToString() + "<br/>";
                        }
                        if (error.Count > 0)
                        {
                            plError.Visible = true;
                            lbError.Text = "Bạn kiểm tra lại thông tin phân lớp học viên:" + "<br/>" + count;
                        }
                    }
                    oledbcon.Close();
                }
                else
                {
                    ThongBao("Tệp tin không đúng định dạng Excel!");
                }
            }
            else
            {
                ThongBao("Bạn chưa tải tệp tin!");
            }
            LoadHocVienChinhThuc();

        }

        protected void lbTaoTKB_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Admin/Default.aspx?idpage=qltkb");
        }
    }
}